<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
 * 分类属性
 */
class Attribute extends Auth_Controller{
	
	public function __construct(){
		parent::__construct();
		$this->load->model('attribute_mdl','att_mdl');
		$this->load->model('sort_mdl');
	}
	
	/**
	 * 分类属性查看，修改
	 */
	public function Action(){
		$sid = $this->input->get('sid',TRUE);
		
		//判断分类是否存在
		$issort = $this->sort_mdl->get_one(['id'=>$sid]);
		if(empty($issort)){
			show_error("该分类不存在");
			exit;
		}
		
		//查询当前分类的属性
		$data = $this->att_mdl->get_all($sid);
		
		//属性组装
		$list = $this->att_mdl->get_list($data);
		
		$this->_view('admin/attribute_action',['list'=>$list]);
	}
	
	/**
	 * 添加属性
	 */
	public function create(){
		
		if($this->input->is_ajax_request()){
			$post = $this->input->post(NULL,TRUE);
			
			if(empty($post['aname'])){
				die('属性名称不能为空');
			}
			
			if(empty($post['sort_id'])){
				die('服务器内部错误！');
			}
			
			$r = $this->att_mdl->install($post);
			$this->logs->add($r,'新增属性');
			echo $r === false ? '添加属性失败！' : 1;
			
		}else{
			$sid = $this->input->get('sid',TRUE);
			
			//判断分类是否存在
			$sort = $this->sort_mdl->get_one(['id'=>$sid]);
			if(empty($sort)){
				show_error("该分类不存在");
				exit;
			}
			
			//查询顶级分类属性
			$this->db->where('sort_id',$sid);
			$list = $this->att_mdl->select(['pid'=>0]);
			
			$this->_view('admin/attribute_create',['sort'=>$sort,'list'=>$list]);
		}
	}

	/**
	 * 属性删除
	 * AJAX
	 */
	public function delete(){
		$id = $this->input->post('aid',TRUE);
		
		if(!$this->input->is_ajax_request() || empty($id)){
			show_404();
			exit;
		}
		
		$map = sprintf('`id` = %d OR `pid` = %d',$id,$id);
		$this->db->where($map);
		$r = $this->att_mdl->delete();
		$this->logs->add($r,'删除分类属性');
		echo $r === false ? '删除失败！' : 1 ;
	}
	
	/**
	 * 属性修改
	 */
	public function update(){
		if($this->input->is_ajax_request()){
			$post = $this->input->post(NULL,TRUE);
			if(empty($post)){
				die('参数错误！');
			}
			
			if(empty($post['id'])){
				die('参数错误！');
			}
			
			if(empty($post['aname'])){
				die('属性名称不能为空');
			}
			
			$this->db->where('id',$post['id']);
			$r = $this->att_mdl->update($post);
			$this->logs->add($r,'修改属性');
			echo $r === false ? '修改失败！' : 1 ;
			
		}else{
			$id = $this->input->get('aid',TRUE);
			
			if(empty($id)){
				show_error('参数错误！');
				exit;
			}
			
			$this->db->where('id',$id);
			$res = $this->att_mdl->select();
			
			if(empty($res)){
				show_error('参数错误！');
				exit;
			}
			
			$this->db->where('sort_id',$res[0]['sort_id']);
			$this->db->where('pid',0);
			$list = $this->att_mdl->select();
			
			$this->_view('admin/attribute_update',['list'=>$list,'res'=>$res[0]]);
		}
	}

}